home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1998 March / Macworld (1998-03) (Disk 1).dmg / Shareware World / Utilities / Text Processing / Alpha / Help / Bug Reports and Debugging < prev    next >
Encoding:
Text File  |  1997-12-20  |  25.2 KB  |  614 lines  |  [TEXT/ALFA]

  1. ================================================================================
  2.  
  3.           Bugs and Bug-reports
  4.  
  5. Please send details of any problems you have with any packages or with Alpha 
  6. itself to the person responsible, or enquire on the Alpha-D mailing list.  
  7. Perhaps someone there will be able to help you out.  Serious bugs which, for 
  8. example, crash Alpha can probably only be fixed by Pete Keleher, but other 
  9. bugs may be Tcl code bugs, and can be fixed more quickly and easily.  
  10. Without a 'Stack Trace' it is ALMOST ALWAYS NOT POSSIBLE to track down 
  11. problems in Alpha's Tcl code, unless they lead to very 'visual' problems.
  12.  
  13.            Stack-traces
  14.  
  15. It would be helpful to have a stack-trace if a command is obviously doing
  16. the wrong thing/failing with an error.  To do this, hit cmd-Y to pull up 
  17. the Tcl shell, and select 'Trace Tcl Proc…' from the menu.  Select the
  18. procedure you need to trace (or ask me which one to trace), and go back to 
  19. where you were to repeat the action which caused the problem.  Now hit 
  20. cmd-Y again, and then select 'Dump Traces' and mail me the resulting window
  21. which is opened.  
  22.  
  23. With some errors it may be worth rebuilding your Tcl indices and then 
  24. quitting and restarting Alpha (use the Tcl menu to do that).
  25.  
  26. Please include the version numbers of Alpha and other packages which you are 
  27. using.  If they are not the latest you should consider upgrading first too.
  28.  
  29.            What procedure to trace?
  30.  
  31. If a menu-selection causes a problem, then it is pretty clear what to
  32. trace, but if it was a key-press it is less clear.
  33.         
  34. Often you won't know which procedure you should trace.  However if the 
  35. problem occurs with a key-press (say you press 'return' and the wrong thing 
  36. happens), then you can find out which procedure is being activated with the 
  37. 'Describe Binding (F7)' menu item: hit F7, followed by the offending 
  38. key-press.  Alpha will give you the name of the procedure which would be 
  39. triggered by that key.  Now setup a trace on that procedure as detailed in 
  40. the preceding paragraph.
  41.  
  42.            Using Trace-func
  43.  
  44. 5.0 introduces the Tcl function-tracing command 'traceFunc'. traceFunc 
  45. allows you to trace a specfic function whenever it is called, sending the 
  46. output to another window. The indented trace of the function includes all 
  47. parameters, each argument enclosed within single quotes, as well as the 
  48. function result. 
  49.  
  50. The syntax of the function is:
  51.  
  52.     traceFunc on <funcName> <winName>
  53.     traceFunc off
  54.     traceFunc status
  55.  
  56. For example, if I want to trace the proc 'nextFunc' (defined in 
  57. procs.tcl), the following might be a log of my activity at the Tcl shell:
  58.  
  59.     Welcome to Alpha's Tcl shell.
  60.     Alpha> traceFunc on nextFunc traceWin
  61.     Alpha> traceFunc status
  62.     Func-tracing on, func: nextFunc, win: traceWin
  63.     Alpha> 
  64.  
  65. Now I create a new window, "dirty" it so that I can get a save dialog, 
  66. and save it as 'traceWin'. Note that tracing is only sent to open 
  67. windows, so I must leave 'traceWin' open.
  68.  
  69. Then I open any random non-C file (because I want the function to fail), go 
  70. to the beginning of the file, and type escape-x 'nextFunc'.  The output 
  71. should look something like the following:
  72.  
  73.     nextFunc 
  74.      searchFunc '1' 
  75.       getPos 
  76.       OK: 38530
  77.       select '38530' 
  78.       OK: 
  79.       saveVars 
  80.       OK: 
  81.       if '(1==1)' '
  82.             nextLine
  83.         ' 'else' '
  84.             previousLine
  85.         ' 
  86.        nextLine 
  87.        OK: 
  88.       OK: 
  89.       getPos 
  90.       OK: 38573
  91.       set 'pos' '38573' 
  92.       OK: 38573
  93.       setVar 'regExpr' '1' 
  94.       OK: 
  95.       setVar 'forward' '1' 
  96.       OK: 
  97.       setVar 'ignoreCase' '1' 
  98.       OK: 
  99.       search '^[^ \t\(#\r/@].*\(.*\)$' '38573' 
  100.       ERROR: Search unsuccessful
  101.      ERROR: Search unsuccessful
  102.     ERROR: Search unsuccessful
  103.  
  104.  
  105. The trace output shows that the problem was an unsuccessful search. In 
  106. this case, a dialog informed us of this fact anyway, but many Alpha 
  107. routines are not as friendly when it comes to error messages.
  108.  
  109.  
  110. Another way to debug Tcl routines is to insert statements that print 
  111. values to another window. For example, one could use the following 
  112. routine: 
  113.  
  114.     proc out args {
  115.         insertText -w "*tcl shell*" $args
  116.     }
  117.  
  118. Whatever you do, don't use 'puts stdout' or 'puts stderr' since these
  119. tend to crash Alpha (hopefully to be fixed at some point...)
  120.  
  121. ================================================================================
  122.  
  123.            Here's some debugging advice from Tom:
  124.  
  125. Hi All,
  126.  
  127. This is so simple that I hesitate to admit that I missed it this long, but
  128. I'll swallow my pride an mention this in case anyone  else has missed this.
  129.  
  130. When you want to get a handle on what a proc is doing, you can use a
  131. combination of the source in one window and the shell in another.
  132.  
  133. First, figure out what values the parameters of the proc would take on in
  134. the case you want to investigate, (perhaps from a trace while running
  135. things normally).
  136.  
  137. Now go to the shell and set variables with the same names as the parameters
  138. to the values you discovered through the trace.
  139.  
  140. Now go to the tcl source file and select a subset of the proc's internal 
  141. code and just load it.
  142.  
  143. After each sucessive part is run you can pop over to the shell and use it
  144. to check out the state of any variable with a simple set statement, or, 
  145. even easier, just cmd-dbl-click or a variable name you want to inspect the 
  146. value of.
  147.  
  148. I've found this real useful for investigating menu routines, you can change
  149. the menu creation string that the proc gave you and just select and reload
  150. it to see if your changes will do what you want.
  151.  
  152. Tom
  153.  
  154. ===============================================================================
  155.  
  156.           Known Bugs
  157.  
  158. (As of Alpha 7.0)
  159.  
  160. These are all bugs with Alpha's internal compiled code, _not_ with the 
  161. Tcl scripts which come with Alpha.  You will have to work around them 
  162. where possible.  Some of them seem to be caused by Alpha not using 
  163. 'lappend' internally when it should be (it often seems to use 'append' 
  164. together with some inadequate quoting instead).  This causes big 
  165. problems when characters like '[]{}' are involved.
  166.  
  167. ()    searching backwards for this regexp in a window can lock Alpha up
  168.     or crash with error 28 (stack hits heap):
  169.  
  170.         (/\*([^*]|[^*]\/|\*[^\/]|\r)*\*/|^\[ \t\]\t*\$)
  171.  
  172.     Vince can supply a 100% reproducible example of this if needed.
  173.     Minor variants on this regexp have the same problem.  This occurs
  174.     when using text::genericIndent when editing javascript code in
  175.     HTML pages.  I'm not sure what the search is seeing that causes
  176.     the problem.
  177.  
  178. ()    Del = keycode 0x75 on most machines, but on some the delete key
  179.     seems to be keycode 0x33, so bindings to 'Del' do not work!
  180.  
  181. ()    removeTMark doesn't seem to work
  182.  
  183. ()    The following line exhibits a bug in the auto-wrap feature of 
  184.     Alpha.  It occurs with any long line which contains no internal
  185.     space but does contain punctuation/braces.  (This actually occurs
  186.     quite frequently in latex 'equation' environments).  Move the 
  187.     cursor do somewhere near the end of the line and start typing (make 
  188.     sure the window isn't read only).  Blank lines are inserted at the
  189.     before the given line!    
  190.     
  191.     ,asbafsafaskasd.jsasassdkasdas,d{adasdadhja}skasddaasdasasasasasasasaasas
  192.     
  193. ()    under  MacOS 8, sometimes when Alpha is already running and you 
  194.     double click on a file in the finder to open Alpha, you can get
  195.     an error -917 (in the finder) and the file isn't opened.  I think
  196.     OS 8 sends a different aevent to an application of it is already
  197.     running, and this may be the problem.
  198.     
  199. ()    when dealing with a menu with more than perhaps 20 items, Alpha won't
  200.     unconvert the menu-item when it is sent to the menu-proc.  So if I
  201.     build a menu with 'menu -n Name -p my_proc {lots of items... thisOne}'
  202.     then 'thisOne' appears in the menu as 'This One' (as desired), but
  203.     when it is selected, the call is 'my_proc Name "This One"' which
  204.     is incorrect.  The menu items near the top of the menu work fine!
  205.     
  206.     There are many other problems with long menus: 'enableMenuItem'
  207.     doesn't work properly. i.e. enableMenuItem $m thisOne 0 will
  208.     say there's no item with that name, and enableMenuItem $m "This One" 
  209.     0 will not complain, but won't actually disable the item either!
  210.     
  211. ()    Almost none of Alpha's file/glob/cd/... commands support aliases
  212.     This would be fixed with Tcl8.0
  213.     
  214. ()    If I hit the key equivalent of a menu-item, it is called even if the
  215.     menu item has been disabled.  Also there's no command to disable
  216.     an entire menu in one go.
  217.     
  218. ()    Under MacOS 8 there are a few visual glitches with menus.  These
  219.     are fixed with Mercution MDEF 1.3.5b1 which Alpha needs to upgrade to.
  220.     (It's currently just pasted into Alpha 7.0fc1 which seems to work!)
  221.     
  222. ()    grep, scanfile etc. basically fail on Unix format files: they think
  223.     any match is on the first line of the file.  This is especially
  224.     useless for batch searches in which every match is listed as being
  225.     on the first line.  Upgrading to Tcl 8 should help this!
  226.     
  227. ()    The dialog command (i) fails when given a huge number of items in
  228.     more than 8 panes. (call 'global::allPrefs' to see this happen --
  229.     that's why the prefs have to be subdivided now). (ii) isn't
  230.     documented completely: '-n' option needs explaining.
  231.     
  232. ()    icGetPref has some problems (other problems listed below too): 
  233.  
  234.     «Alpha ƒ» icGetPref Helper•http
  235.     lG1MacLynxphervigator™ 3.0
  236.  
  237. ()  'regexp {\w} a' == 1, but 'regexp {[\w]} a' == 0, i.e. the \w only
  238.     matches if it isn't inside a range!  There are many other regexp problems.
  239.  
  240. ()    'puts stderr blah' brings up a SIOUX window and crashes Alpha.  Alpha 
  241.     should be linked with the sioux-stubs, so no sioux-code is linked in,
  242.     and these puts commands should be diverted to some Tcl proc equivalent.
  243.     (the procedure tclLog in "library.tcl" is a good standard alternative)
  244.     Vince can supply you with some C code which will divert stdio to
  245.     given tcl procedures.
  246.  
  247. ()    Cmd-double-clicking seems first to check if there is a ':' anywhere in the
  248.     non-whitespace surrounding the click position, and if so sends that text
  249.     off to Internet Config.  Unfortunately if IC doesn't think it is a URL 
  250.     (often the case since, for instance, TeX labels and Tcl procedure names
  251.     may contain colons) the standard 'CmdDblClick' procedure is never called.
  252.     In such a case the cmd-dbl-click is just lost. One way around this is to 
  253.     double-click to get the selection you want, and then invoke the 
  254.     CmdDblClick routine via its keybinding (default = F6).
  255.  
  256. ()    icGetPref on many items returns 'ic err: -670' which is the following 
  257.     error:
  258.     
  259.         icTruncatedErr = -670,    /* more data was present than was returned */
  260.     
  261.     This happens for 'DownloadFolder' for example (_many_ others too).
  262.         
  263. ()  Error replies to 'dosc' are not always handled correctly:
  264.  
  265.         Welcome to Alpha's Tcl shell.
  266.         «Alpha ƒ» dosc -c 'WIsH' -s "file asfasf"
  267.         Error: Error: 1
  268.         «Alpha ƒ» dosc -c 'WIsH' -s "info asfasf"
  269.         Error: Error: bad option "asfasf": must be args, body, cmdcount, commands, 
  270.         complete, default, exists, globals, hostname, level, library, loaded, locals, 
  271.         nameofexecutable, patchlevel, procs, script, sharedlibextension, tclversion, 
  272.         or vars
  273.         «Alpha ƒ» 
  274.         
  275.     One might think this was a problem on 'WIsH's end of things, but 
  276.     if you replace the above by the equivalent 'AEBuild ...  misc dosc 
  277.     ...'  then it is clear the reply is correct.  Therefore Alpha is 
  278.     screwing up somewhere in 'dosc'.  Unfortunately it is a pain to 
  279.     parse the results of AEBuild which is why dosc is so nice.
  280.  
  281. ()    Menu key bindings to items which contain square brackets '[]' do not
  282.     work.  This is because the binding is evaluated, which tries to
  283.     evaluate the '[xxx]'.  When creating the menu item, the text should
  284.     have been surrounded by '{}'.  This is most often manifested in the
  285.     window menu, for which keyboard equivalents cmd-0-9 do not work if
  286.     a window's name contains square brackets.
  287.     (There is a pseudo-workaround for this in the Tcl code).
  288.     Again this is probably a problem with append vs lappend used 
  289.     internally.
  290.  
  291. ()    When you use 'opt-cmd-E' to enter the replace string. The status
  292.     window tells you "Entered replace 'blah blah'" where in fact 
  293.     'blah blah' is the _search_ string not the replace string!
  294.     (There is a workaround for this in "coreFixes.tcl")
  295.  
  296. ()  If you have an untitled dirty window which is not at the front, and then 
  297.     use 'Save all', you will get a save dialog for the window at the front, not 
  298.     the untitled one behind.
  299.  
  300. ()    The optional parameter to 'matchIt' doesn't seem to have any effect
  301.     for me.  E.g. the following two procs (when bound to a key) both can
  302.     take up to 10 seconds to return in a large (200k) file.  Presumably the
  303.     first is only supposed to search 200 characters so should be quick.
  304.  
  305.     proc matchFast {} {
  306.         if ![catch {matchIt ")" [lineStart [getPos]] 200} paren] {
  307.             alertnote "yes"
  308.         } else {    
  309.             alertnote "no"
  310.         }
  311.     }
  312.     proc matchSlow {} {
  313.         if ![catch {matchIt ")" [lineStart [getPos]]} paren] {
  314.             alertnote "yes"
  315.         } else {    
  316.             alertnote "no"
  317.         }
  318.     }
  319.  
  320. ()  'matchIt "\]" $pos' never works --- the ']' argument to matchIt 
  321.     isn't handled correctly; the proc always retruns 'no match found'
  322.  
  323. ()    Furthermore, matchIt fails when matching the '{}' begin and end 'proc'
  324.     pair of a large function.  'balance' works still!  As a concrete
  325.     example, look at proc TeX::Completion::Cite.
  326.  
  327. ()    bringToFront doesn't work on window names which contain colons 
  328.     (unusual case I know)
  329.  
  330. ()    GetTMarks thinks non-file windows are in the '[pwd]' directory,
  331.     rather than in no directory at all.
  332.  
  333. ()    Multi-line edit boxes in dialogs should allow 'return' to be pressed,
  334.     without triggering the 'OK' button.  Otherwise there is no way to enter
  335.     a return.  (sure you can enter '\r' and have the calling procedure
  336.     manipulate the result, but that's not a good solution; also the above
  337.     is standard MacOS behaviour).
  338.     
  339. ()    gotoTMark often scrolls the window all the way to the top (0), 
  340.     before scrolling back to a TMark!  This gives the window a 
  341.     horrible up/down jerk motion when moving from one TMark to the 
  342.     next.
  343.  
  344. ()    posToRowCol doesn't deal with tabs.  Is this a bug or a 
  345.     feature?  Basically on a line beginning with a tab, I'd expect 
  346.     [posToRowCol $start] to be "X 0", and [posToRowCol [incr 
  347.     start]] to be "X 4" (or "X 8" or whatever).  
  348.     
  349.     To put this another way, 'posToRowCol [getPos]' does not have the same
  350.     value as the row/col indicator in the status bar. 
  351.   
  352. ()  Regexp's still have some problems:
  353.  
  354.     «Alpha ƒ» regsub -all {\W} {aaaaaa  aa} {Z} t
  355.     14
  356.     «Alpha ƒ» set t
  357.     aaaaaaZZaaZZZtZZZZgæZZézZDZÇZC0Z
  358.     «Alpha ƒ» 
  359.     
  360.     This used to give:
  361.     
  362.     «Alpha ƒ» regsub -all {\W} {aaaaaa  aa} {Z} t
  363.     7
  364.     «Alpha ƒ» set t
  365.     aaaaaaZZaaZZZtZZZ
  366.     
  367.     which is also wrong.
  368.  
  369. ()    The interaction of the search dialog box with the 'grepfset' procedure
  370.     is incorrect:
  371.  # 
  372.  # "grepfset" --
  373.  # 
  374.  #  args: wordmatch ?-nocase? expression fileset
  375.  #  Obviously we ignore wordmatch
  376.  #  
  377.  #  If the 'Grep' box was set, then the search item is _not_ quoted.
  378.  #  
  379.  #  Non grep searching problems:
  380.  #  
  381.  #  If it wasn't set, then some backslash quoting takes place. 
  382.  #  (The chars: \.+*[]$^ are all quoted)
  383.  #  Unfortunately, this latter case is done incorrectly, so most
  384.  #  non-grep searches which contain a grep-sensitive character fail.
  385.  #  The quoting should use the equivalent of the procedure 'quote::Regfind'
  386.  #  but it doesn't quote () and perhaps other important characters.
  387.  #  
  388.  #  Even worse, if the string contained any '{' it never reaches this
  389.  #  procedure (there must be an internal error due to bad quoting).
  390.  # 
  391.  
  392. ()  The string returned from any 'dialog ....' edit box is not 
  393.     appended to the result correctly.  The result should be a list
  394.     of items, but I guess 'append' rather than 'lappend' is used
  395.     internally.  Example: if a dialog has an edit-item as the
  396.     first item, and I enter '} then {' (to search for obsolete Tcl 
  397.     syntax), the string returned by dialog '{res1 res2 ...}' is 
  398.     actually '{} then { res2 ...}' which is obviously completely
  399.     wrong.  It should have been {{\} then \{} res2 ...}.  Alpha
  400.     should be using 'lappend' internally which will do all the
  401.     hard work of quoting the result for you.  I think the same
  402.     problem occurs with many of Alpha's standard dialogs.
  403.     
  404. ()    the '-c' menu option to ignore all meta-characters also ignores all 
  405.     sub-menus (or rather it puts some weird character in the menu and 
  406.     there is no sub-menu).
  407.  
  408. ()  rememberPatternHook is called without quoting its arguments correctly
  409.     This means the call fails if either search of replace string contain
  410.     unquoted '{' or '}'.  (see bug a few lines up for probable solution) 
  411.  
  412. ()    'replaceText' on a large block of text which overlaps the top of 
  413.     the window (i.e.  half a big paragraph is off the top of the 
  414.     window, half is still visible, and we now replace the paragraph 
  415.     with some different text) causes a re-draw error in which the 
  416.     replacement text is all drawn in the window (from the top down) 
  417.     when only some of it should be visible.  This gives the illusion of 
  418.     over-writing other stuff in the window.  All is ok if you scroll up 
  419.     and down to refresh.
  420.  
  421.     This is most often manifested when using 'fillParagraph' on a large 
  422.     paragraph which overlaps the top of the window.
  423.     
  424. ()  the GetTMarks list doesn't contain the duplicate window markers
  425.     <2>, <3> etc, as returned by [winNames -f].  This could be considered
  426.     a bug or a feature. 
  427.  
  428. ()    The 'search' command follows the checkboxes in the search dialog 
  429.     box.  i.e.  if I do 'search -f 0 ...'  with no '-m' (word match) 
  430.     mentioned, but word-match is ticked in the dialog box, then my 
  431.     search tries to match words (rather awkward if it's a regexp 
  432.     search).  To see this in action, tick match-words and then try 
  433.     either of my procedures 'trace this proc' or 'load this proc'.  
  434.     They fail.
  435.  
  436. ()    If a file is opened with a selection (say everything: cmd-A), 
  437.     then closed, and then the data-fork of the file is changed, so 
  438.     that it is shorter, on re-opening the file, the highlighting is 
  439.     v.  odd, and I had to redraw the window to fix it (ctrl-l).  
  440.     Alpha should probably check if highlighting runs past the end of 
  441.     the file.
  442.  
  443. ()    I tried out Adobe Type Reunion Deluxe 2.0 the other day, and it thinks 
  444.     the 'modes menu' towards the right end of the status bar is a font 
  445.     menu!  Most peculiar.
  446.  
  447. ()    'dialog' doesn't cope with _very_ complex multi-page dialogs
  448.  
  449. ()    The colours Alpha uses are incorrect for 'yellow' and 'cyan'.  You can
  450.     fix them if you want using 'config->redefine colors'.
  451.  
  452. ()    There are numerous problems (small and large) with Alpha's moveFile
  453.     removeFile etc.  These will go away if Alpha upgrades to Tcl8.0.
  454.     Here's an example: let's say we have files '$a' and '$b' and
  455.     we wish to replace $a with $b.  Then we can't do it.
  456.     
  457.     deleteFile $a ; moveFile $b $a   ;# gives 'unknown error'
  458.     moveFile $a ${a}~ ; moveFile $b $a ; deleteFile ${a}~  ;# gives error
  459.  
  460. ()  Several people have reported these two problems, but not everyone
  461.     sees them:
  462.     
  463.     >Just a quick note...  I am using 7.0b2 on my 9500/132 and 8100/100AV.  On
  464.     >my 8100, the tear-off menus are chopped off on the right side when you tear
  465.     >them off to stand alone.  This happens on a friend's 8100/80 as well.
  466.     >
  467.     >Also, on both my machines and my friend's , trying to print anything causes
  468.     >the display to be overwritten with misaligned text, and the PrintMonitor
  469.     >shows a file in the queue which never prints.  Sometimes I have to reboot
  470.     >the machine to get printing back.  The three machines are running three
  471.     >different OS versions from 7.5.3 to 7.6.1, if that is of interest.  Anyone
  472.     >else see this?
  473.     
  474.     I'm using Alpha 6.52 on a Starmax 4100 with 7.6.1 and Aaron and I
  475.     experience the same menu tear-off problem.  I also experienced it with 6.5
  476.     and 6.51 (I think).
  477.     
  478.     Update:
  479.     
  480.     It seems as if you hit the 'zoom' box in a window, that some of these 
  481.     printing problems go away (you have to do it for each window you want 
  482.     to print!)
  483.     
  484. ()    From: "Richard L. Samuels" <rls25@CORNELL.EDU>
  485. To: ALPHA-D@LISTSERV.SYR.EDU
  486. Subject: Crashing bug with auto-indent in 7.0b3
  487.  
  488. Create a new file in Java mode. Write a set of braces like this:
  489. {
  490.         {
  491.         } <--
  492. }
  493.  
  494. Then put a begin comment (/*) above the first brace and position the cursor
  495. after the first end brace (where the arrow is). If you press return,
  496. everything appears to work correctly. Put the cursor back at the same
  497. position and press return again. It takes a little bit longer this time,
  498. and as you put more lines between the two braces (or between the brace and
  499. the end of the file?) it seems to take recursively longer. Eventually, the
  500. program hangs entirely, and occasionally it crashes into Macsbug at
  501. "Bowels_of_the_Memory_Manager".
  502.  
  503. This always results in a crash when I forget to close comments in large
  504. files. It is impossible to recover from such a crash by force-quitting or
  505. by issuing the "es" command.
  506.  
  507. ===============================================================================
  508.  
  509.           Pseudo-Bugs
  510.  
  511. These are things which Alpha perhaps ought to do, but doesn't and hence
  512. can be considered suggestions for the future or just bugs.
  513.  
  514. ()    Let 'diff', 'scanfile' etc.  work on files with Unix eol's as well 
  515.     as just mac ones (they 'work', but treat the entire file as a 
  516.     single line, which isn't too helpful).  Also 'gets' treats an 
  517.     entire file as a single line if it's delimited by '\n'.  I guess
  518.     these issues would be resolved by updating Alpha's Tcl core to 7.6/8.0.
  519.  
  520. ()    There is no way to get or set the font or font-size of a window from Tcl
  521.  
  522. ()     Add commands/options: (Vince _really_ wants these!)
  523.  
  524.     'GetTMarks ?-w win?'
  525.     'replaceText ?-w win? ...'
  526.     'getPosOfTMark ?-w win? name'
  527.     
  528. ()    There's no way to know which application it was which replied to an
  529.     event which was passed to 'handleReply'.
  530.     
  531. ()    Have a flag to allow reporting of errors which hit the top level.  
  532.     Currently such errors just vanish and you're left wondering what exactly 
  533.     did/didn't happen.  I.e. the user should be able to define a 'errorHook'
  534.     procedure which is called with such top-level errors.
  535.  
  536. ()    You can't make a menu with both menu-form-conversion and not, unless
  537.     you build it with 'addMenuItem ?-m?', but then you can't add dynamic
  538.     items or sub-menus.  What is needed is a code, like '&', to go in
  539.     the 'menu' command which says "don't convert this item".
  540.  
  541. ()    If you use 'killWindow' from within an 'openHook' proc, Alpha will
  542.     often crash (MacsBug tells you it's in 'rowColToPos' or some such proc).
  543.     There's no way to abort the open window from within that proc that
  544.     seems to be entirely safe.
  545.     
  546. ()    Cursor-key-bindings can't appear in menus.
  547.     
  548. ()     Make the 'listpick' box width & height user configurable?
  549.  
  550. ()    There is currently no facility to get a list of eventHandlers which 
  551.     have been defined.
  552.  
  553. ()    Extend 'matchIt' to cope with '/* ...  */' pairs as well as normal 
  554.     braces.
  555.  
  556. ()    Make 'quick find' and 'reverse quick find' more powerful as follows - 
  557.     'delete' removes one character from what's currently being found (and 
  558.     goes back to where that was found, so it's a kind of 'Undo' feature).  
  559.     Also clicking in the scrollbar, or anything which doesn't actually 
  560.     affect the window shouldn't reset the quick search which it currently 
  561.     does.  Both of these are features in Emacs which I miss in Alpha (as 
  562.     opposed to the other way round which is true of most things).
  563.  
  564. ()    Adjusting tab-size/font should not dirty the window.
  565.     (There is a work-around for this in "coreFixes.tcl")
  566.         
  567. ()    Implement find/replace in the current selection (there is a proc 
  568.     to do this in "procs.tcl", but far more convenient would be a check box 
  569.     in the standard find dialog box).
  570.  
  571. ()    Move the replace-in-fileset facility to the standard find dialog as 
  572.     another option.  In fact why not combine this with the above 
  573.     suggestion and have a pop-up option menu with 'search this document' 
  574.     'search current selection' 'search entire fileset' as options, instead 
  575.     of the current 'multiple files' checkbox?  'Replace All' should replace 
  576.     all occurrences in the current selection/file, whilst for filesets this 
  577.     is rather drastic so I'd suggest there be another checkbox, which says 
  578.     'replace in all files' and changes the meaning of opt-cmd-R in that 
  579.     case.
  580.  
  581. ()    Let a window scroll at least so that the end of the document is 
  582.     half-way up the window?  Currently the last line of text must lie at 
  583.     the very bottom of the window and this is disconcerting when typing a 
  584.     long latex file (one can of course just add a whole bunch of returns, 
  585.     but that shouldn't be necessary).
  586.  
  587. ()    When Alpha's memory is low, put up a warning dialog that you should quit
  588.     and restart.
  589.     
  590. ()    'regModeKeywords' colorizes keywords without regard to capitalizations, there 
  591.     are plenty of languages where capitalization is significant, it would be 
  592.     nice to have a switch to tell alpha not to ignore keyword capitalization.
  593.     
  594. ()    'getModifiers' opened up some new possibilities for interface routines, 
  595.     however, in a couple of places where I would like to use this, things 
  596.     are done directly with alpha and there are no Tcl proc's that we can 
  597.     hang modifications off of.  Specifically, neither of the function 
  598.     pop-up's allow you to dectect if a modifier key was held down, (you 
  599.     could then offer a different menu, say the structual marks vs.  the 
  600.     alphabetical mark recently introduced via toTclMarkFile).  Once a menu 
  601.     is presented, there is no way to detect that a choice has been made 
  602.     with a modifier key depressed, this would be useful to provide an 
  603.     automatic mark stack push (such a mechanism does work in the status 
  604.     line <mode> pop-up, if an option key is held while selecting an item 
  605.     there, the help file (if any exists) for that mode will be opened.
  606.     
  607. ()    It would be nice if matchIt could put on a little bit more of a display so 
  608.     you are better able to pick it up with your peripheral vission as you are 
  609.     typing. Maybe "halo' the matchIt position before flashing the character, 
  610.     or form a cross of hilited char positions (above and below, both sides) 
  611.     before flashing the matchIt character.
  612.     
  613.     
  614.